package com.sdkj.fixed.asset.system.config.swagger;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.util.HashSet;

/**
 * Swagger能成为最受欢迎的REST APIs文档生成工具之一，有以下几个原因：
 * Swagger 可以生成一个具有互动性的API控制台，开发者可以用来快速学习和尝试API。
 * Swagger 可以生成客户端SDK代码用于各种不同的平台上的实现。
 * Swagger 文件可以在许多不同的平台上从代码注释中自动生成。
 * Swagger 有一个强大的社区，里面有许多强悍的贡献者
 *
 * @author 王艳
 */
@Configuration
@EnableSwagger2
public class SwaggerConfig {
    private static final String VERSION = "1.0.0";
    public static final HashSet<String> consumes = new HashSet<String>() {
		{
			add("application/x-www-form-urlencoded");
			add("application/json");
		}
	};

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .enable(true)
                .apiInfo(apiInfo())
                .consumes(consumes)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.sdkj.fixed.asset.system.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("智慧园区项目后台接口")
                .description("Restful 风格接口")
                .version(VERSION)
                /*.license("Apache 2.0")
                .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")*/
                .build();
    }
}
